// index.ts
// 获取应用实例
import {IAppOption} from '../../app.option'
import {routing} from '../../constant/routing.constant'

const app = getApp<IAppOption>()
const img = '/resources/car.png'

// 初始化经纬度
const initLongitude = 100.87264654736123
const initLatitude = 29.761267625855936

Page({
    isPageShowing: false,
    /**
     * 页面的初始数据
     */
    data: {
        avatarURL: '',
        setting: {
            skew: 0,
            rotate: 0,
            showLocation: true,
            showScale: true,
            subKey: '',
            layerStyle: -1,
            enableZoom: true,
            enableScroll: true,
            enableRotate: false,
            showCompass: false,
            enable3D: false,
            enableOverlooking: false,
            enableSatellite: false,
            enableTraffic: false,
        },
        location: {
            // 经度
            longitude: initLongitude,
            // 纬度
            latitude: initLatitude,
        },
        scale: 10,
        markers: [{
            iconPath: img,
            id: 0,
            // 经度
            longitude: initLongitude,
            // 纬度
            latitude: initLatitude,
            width: 20,
            height: 20
        }
        ]
    },
    /**
     * 生命周期函数--监听页面加载
     */
    async onLoad() {

        const userInfo = await app.globalData.userInfo

        this.setData({
            avatarURL: userInfo.avatarUrl
        })

    },
    /**
     * 生命周期函数--监听页面显示
     */
    onShow() {
        this.isPageShowing = true
    },
    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide() {
        this.isPageShowing = false
    },
    /**
     * 定位到我的当前位置
     */
    onLocationTap() {
        // 使用gcj02坐标系
        // 使用说明: https://developers.weixin.qq.com/miniprogram/dev/api/location/wx.getLocation.html
        wx.getLocation({
            type: 'gcj02',
            success: res => {
                // 设置经纬度
                this.setData({
                    location: {
                        // 经度
                        longitude: res.longitude,
                        // 纬度
                        latitude: res.latitude,
                    },
                })
            },
            fail: async () => {
                await wx.showToast({
                    icon: 'none',
                    title: '请前往设置页授权位置信息',
                })
            }
        })
    },
    /**
     * 扫码租车
     */
    onScanTap() {

        wx.scanCode({
            success: async () => {

                await this.selectComponent('#licModal').showModal()

                const carId = 'car123'
                // const redirectURL = encodeURIComponent(`${routing.unlock()}?car_id=${carId}`)
                // await wx.navigateTo({
                //     url: `${routing.register()}?redirect=${redirectURL}`
                // })
                await wx.navigateTo({
                    url: routing.register({
                        redirectURL: routing.unlock({
                            car_id: carId
                        })
                    })
                })

            },
            fail: console.error
        })

    },
    /**
     * 车经纬度移动
     */
    onMove() {
        const map = wx.createMapContext('map')
        let des = {
            // 经度
            longitude: initLongitude,
            // 纬度
            latitude: initLatitude,
        }
        const move = () => {
            des.longitude += 0.1
            des.latitude += 0.1
            map.translateMarker({
                destination: {
                    // 经度
                    longitude: des.longitude,
                    // 纬度
                    latitude: des.latitude,
                },
                markerId: 0,
                autoRotate: false,
                rotate: 0,
                duration: 5000,
                animationEnd: () => {
                    if (this.isPageShowing) {
                        console.log(this.isPageShowing)
                        move()
                    }
                },
            })
        }
        move()
    },
    /**
     * 我的出行
     */
    async onMyTripsTap() {
        await wx.navigateTo({
            url: routing.mytrips()
        })
    }
})
